<?php

class Zend_View_Helper_ImageUrl
{
 private $basePath = '/public/images/db/';
 private $noImage = array(0  => '/public/images/nophoto100.gif'
       ,200=> '/public/images/nophoto230.gif'
       ,640=> '/public/images/nophoto230.gif'
       );
 /**
  * строит ссылку на изображение
  */
 public function imageUrl($table, $field, $size, $id)
 {
  $result = $this->basePath.$table.'/'.$field.'/';
  $element = $this->getElement($result, $id);
  if($element !== false)
  {
   $result .= $element['path'].$element['name'];
  }
  else {
   $result = $this->getNoImageUrl($table, $field, $size);
  }
  return $result;
 }
 private function getElement($basePath, $id)
 {
  //print "id={$id[0]},{$id[1]} length=".strlen($id);
  $result = array($path = '', $name = '');
  $path = ''; 
  for($i=0; $i<strlen($id)-1; $i++)
  {
   $path.=substr($id, $i, 1).'/';
  }
  $result['path'] = $path;
  $result['name'] = substr($id, strlen($id)-1, 1);
  $pattern = $_SERVER['DOCUMENT_ROOT'].$basePath.$result['path'].$result['name'].'.*';
  //print 'pattern='.$pattern."\n";
  $files = glob($pattern);
  if($files)
  {
   $result['name'] = basename($files[0]);
  }
  else {
   $result = false;
  }
  return $result;
 }
 private function getNoImageUrl($table, $field, $size)
 {
  return $this->noImage[$size]; 
 }
}